Helix QAC QA·CLI Changes in 2025.1

'Homeless' diagnostics are now output to CLI

  • Command: qacli view
  • Old Behavior: Homeless diagnostics, with no sub-diagnostics were not output.
  • New Behavior: Homeless diagnostics, with no sub-diagnostics are now output, against the file "homeless.h". This file is used to indicate the 'location' of a 'homeless' diagnostic i.e. a diagnostic that does not map to a single file/line/column. For example, project level stats produced by RCMA, such as STNRA.

Enhanced local baseline location validation

  • Command: qacli baseline ‑‑set-baseline ‑‑local‑store <dir>
  • Old Behavior: The location was not always validated.
  • New Behavior: The location and the presence of a suppression file is now always done.

Inter TU Analysis is now disabled if the Dataflow component is not in the toolchain

  • Command: qacli pprops ‑‑misc‑setting INTER_TU_ANALYSIS ‑‑set + ‑P <project>
  • Old Behavior: You could set this option, even if there was no Dataflow component in the toolchain.
  • New Behavior: If you try to set this option and the Dataflow component is not already in the toolchain, then an error message will be displayed and the command will return an error return code 2 (Command Processing Failure).

Fixed intermittent analyzing failure in parallel runs

  • Command: qacli analyze
  • Old Behavior: In a CI/CD environment, with concurrent, independent analysis processes running it was possible for a race condition to be triggered, causing an exception on the “cma” file, giving output similar to:
  • A filesystem exception has been encountered for the following path(s):
    /root/.config/Perforce/Helix-QAC-2024.3/cma

  • New Behavior: The race condition has been removed and this failure should not now occur.

All unused suppressions in headers can now be output in suppression reports

  • Command: qacli report ‑‑type SUR ‑‑ ‑‑unused‑sup‑all‑headers | ‑U
  • Old Behavior: In the suppressions report, section "1.2 Unused Suppressions", only unused suppressions that appeared in headers with diagnostics was output.
  • New Behavior: By specifying the new optional parameter ‑‑unused‑sup‑all‑headers | ‑U, unused supressions in any included header will be output in the report.

All unused suppressions in headers can now be output in suppression reports

  • Command: qacli validate projects ‑‑create ‑‑encoding <value>
  • Old Behavior: When creating a new Validate project from within qacli, an optional encoding could be specified. This must match the supported encodings on Validate.
  • New Behavior: The non standard shortcut encodings used by the Parsers are now mapped to encodings that Validate can understand:
  • Parser Encoding Validate Encoding
    ASC No encoding specified.
    EUC

    GB18030 (for machines whose locale is Chinese)

    EUC-KR (for machines whose locale is Korean)

    EUC-JP (for machines whose locale is Japanese)

    NECJ

    OLDJ

    NEWJ

    J213

    ISO-2022-JP

    SJ

    Shift-JIS

    Shift_JIS
    UTF16 UTF-16

    UTF

    UTF8

    UTF-8

    These mappings can also be used when creating Validate projects from the GUI and Plugins.

Fixed obfuscation of ‑t option for certain commands

  • Command: qacli import|export|view|report|sync ‑t
  • Old Behavior: Certain qacli commands with the ‑t option could have the value of ‑t obfuscated.
  • New Behavior: The obfuscation should no longer occur for the listed commands.

New license model distinguishing between User and Build licenses

  • Command: qacli upload ‑‑validate
  • Old Behavior: Uploaded analysis results to Validate.
  • New Behavior: This command has been removed and will now return an error message:
  • *** Warning - The option (--validate|-V) has been REMOVED. ***
    Please use 'qacli validate build' instead
    You will need a purchase a build license to upload to Validate from qacli.

Performance improvements for diagnostic creation

  • Command: qacli view | validate build | validate cibuild
  • Old Behavior: The results filter was continually rebuilt for each file when requesting diagnostics.
  • New Behavior: The results filter is now only built once for these commands, resulting in faster diagnostic creation.

CIP generation is now done before analysis

  • Command: qacli analyze
  • Old Behavior: If needed, CIP generation was done on a per file basis, just before analysis started for that file. This could cause some contention problems and intermittent hangs.
  • New Behavior: CIP generation is now done before any analysis is started. If it fails, then analysis will immediately fail.